import axios from 'axios'
// 导入vuex配置
import store from '@/store/index.js'
// 导入权限处理函数
import { auth } from '@/utils/utils.js'
// 配置请求拦截和响应拦截
axios.interceptors.request.use(
  function (config) {
    //添加请求头
    config.headers['Authorization'] = store.state.token
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    const res = response.data
    // 如果响应的数据中有res.context.acl
    if (res.context) {
      if (res.context.acl) {
        //将所有权限存起来
        //将leftmenu中所有的auth_path组成一个数组
        let authArr = auth(res.context.acl)
        // 调用vuex中存储auth的方法存储
        store.commit('setAuth', authArr)
        store.commit('setLeftmenu', res.context.acl)
      }
      if (res.context.jwt) {
        store.commit('setToken', res.context.jwt)
      }
    }
    return res
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)
// 导出axios
export default axios
